<?php
/**
 * Funciones para facilitar (y especialmente modularizar) el manejo de la interfaz.
 *
 * Prefijos:
 * ld: lista desplegable (CHtml::dropDownList).
 * lista: lista de datos (CHtml::listData).
 */
class Interfaz
{
	public static function listaUsuarios()
	{
		return CHtml::listData(Profile::model()->findAll(array('order'=>'lastname ASC, firstname ASC')), 'user_id', 'fullname');
	}

	public static function listaProfesores()
	{
		return CHtml::listData(
			Profesores::model()->with('id0.profile')->findAll(array('order'=>'lastname ASC, firstname ASC')),
			'id', 'display'
			);
	}

	/**
	 * Devuelve una lista desplegable de usuarios del sistema.
	 * @var $htmlOptions array additional HTML attributes.
	 * @return CHTML::dropDownList lista desplegable de usuarios.
	 */
	public static function ldUsuarios(array $htmlOptions = array())
	{
		$listaUsuarios = CHtml::dropDownList(
			'profesor','id',
			self::listaUsuarios(),
			array_merge(array('empty'=>'(Seleccione un usuario)'),$htmlOptions)
			);
		return $listaUsuarios;
	}

	/**
	 * Devuelve una lista desplegable de profesores del sistema.
	 * @var $htmlOptions array additional HTML attributes.
	 * @return CHTML::dropDownList lista desplegable de profesores.
	 */
	public static function ldProfesores(array $htmlOptions = array())
	{
		$listaUsuarios = CHtml::dropDownList(
			'profesor','id',
			self::listaProfesores(),
			array_merge(array('empty'=>'(Seleccione un profesor)'),$htmlOptions)
			);
		return $listaUsuarios;
	}

	/**
	 * Devuelve los ítems a mostrarse en el menú de la cabecera.
	 * @return array de ítems a asignarse a un zii.widgets.Cmenu.
	 */
	public static function mainMenuItems()
	{
		return array(
			array('label'=>'Inicio', 'url'=>array('/'), 'visible'=>true),
			array('label'=>'Administración del sistema <span class="caret"/>', 'visible'=>Yii::app()->user->name == 'admin', 'url'=>'#', 'itemOptions'=>array('class'=>'dropdown','tabindex'=>"-1"), 'linkOptions'=>array('class'=>'dropdown-toggle','data-toggle'=>"dropdown"), 'items'=>array(
				array('label'=>'Bitácora', 'url'=>array('/bitacora/admin')),
				array('label'=>'Permisos', 'url'=>array('/rights'), 'visible'=>Yii::app()->user->name == 'admin'),
				array('label'=>'Usuarios', 'url'=>array('/user')),
				array('label'=>'Variables del sistema', 'url'=>array('/variablessistema/index')),
				array('label'=>'Entrenar Reconocimiento Facial', 'url'=>array('/marcar/entrenar/list')),
				array('label'=>'Código QR de usuario', 'url'=>array('/marcar/qr/list')),
			)),
			array('label'=>'Datos académicos <span class="caret"/>', 'visible'=>true, 'url'=>'#', 'itemOptions'=>array('class'=>'dropdown','tabindex'=>"-1"), 'linkOptions'=>array('class'=>'dropdown-toggle','data-toggle'=>"dropdown"), 'items'=>array(
				array('label'=>'Aulas', 'url'=>array('/aulas/admin')),
				array('label'=>'Categorías', 'url'=>array('/categorias/admin')),
				array('label'=>'Clases', 'url'=>array('/clases/admin')),
				array('label'=>'Cursos', 'url'=>array('/cursos/admin')),
				array('label'=>'Horarios', 'url'=>array('/horarios/admin')),
				array('label'=>'Materias', 'url'=>array('/materias/admin')),
				array('label'=>'Periodos lectivos', 'url'=>array('/periodoslectivos/admin')),
				array('label'=>'Profesores', 'url'=>array('/profesores/admin')),
				array('label'=>'Recuperación de clases', 'url'=>array('/clasesrecuperacion/admin')),
				array('label'=>'Importar datos de Sapientia', 'url'=>array('/datossapientia')),
			)),
			array('label'=>'Control de asistencia <span class="caret"/>', 'visible'=>true, 'url'=>'#', 'itemOptions'=>array('class'=>'dropdown','tabindex'=>"-1"), 'linkOptions'=>array('class'=>'dropdown-toggle','data-toggle'=>"dropdown"), 'items'=>array(
				array('label'=>'Mis marcaciones', 'url'=>array('/marcaciones/yo')),
				array('label'=>'Suspensiones', 'url'=>array('/suspensiones/admin')),
				array('label'=>'Solicitudes QR', 'url'=>array('/solicitudestarjetaqr/admin')), // ¡Cambiar URL!
				array('label'=>'Solicitudes de Cambio de Fecha de clases', 'url'=>array('/solicitudescambiofecha/admin')),
				array('label'=>'Solicitudes de Cambio de Horario', 'url'=>array('/solicitudescambiohorario/admin')),
				array('label'=>'Asistencias', 'url'=>array('/asistencias/admin')),
				array('label'=>'Liquidaciones', 'url'=>array('/liquidaciones/admin')),
				array('label'=>'Marcaciones', 'url'=>array('/marcaciones/admin')),
			)),
			array('label'=>'Marcar', 'url'=>array('/marcar'), 'visible'=>true),
			//array('label'=>'Cambio Fecha Admin', 'url'=>array('/solicitudescambiofechaAdmin/admin')),
			// array('label'=>'Recuperacion', 'url'=>array('/clasesrecuperacion/admin')),
			// array('label'=>'Mis Marcaciones', 'url'=>array('/verMarcacionesProfesor/admin')),
			// array('label'=>'Reporte de Marcaciones', 'url'=>array('/verMarcacionesReporte/admin')),
			array('label'=>'Nosotros', 'url'=>array('/site/page', 'view'=>'about'),'visible'=>true),
			//array('label'=>'Contactos', 'url'=>array('/site/contact'),'visible'=>true),
			array('label'=>'Iniciar sesión', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
			array('label'=>'Cerrar sesión ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest),
		);
	}

	/**
	 * Devuelve botones predeterminados para el GridView.
	 * @var $controllerName string nombre del controller.
	 * @return array ButtonColumn.
	 */
	public static function defaultGridViewButtons($controllerName = null)
	{
		if ($controllerName == null)
			$controllerName = Yii::app()->controller->id;
		$controllerName = ucfirst($controllerName);
		$buttonColumn = array(
			'class'=>'bootstrap.widgets.TbButtonColumn',
			'htmlOptions'=>array('style'=>'width: 50px'),
			'visible'=>YiiSmartMenu::checkAccess("$controllerName.View"),
			'buttons'=>array(
				'update'=>array(
					'label'=>'Editar',
					'visible'=>'YiiSmartMenu::checkAccess("'.$controllerName.'.Update")',
				),
				'delete'=>array(
					'visible'=>'YiiSmartMenu::checkAccess("'.$controllerName.'.Delete")',
				),
			),
		);
		return $buttonColumn;
	}
}